
package Utils;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.xml.sax.InputSource;

/**
 * Classe dite "statique" permettant de regrouper les fonctions redondantes.
 * @author Valentin & David.
 */
public class Commons {
    
    /**
     * Constante utile pour le chemin de destination des fichiers uploadés (pour déposer le XML et pour choisir la feuille de style.
     */
    public static final String UPLOAD_DIRECTORY = "C:/uploads";
    
    /**
     * Permet de convertir un fichier en tableau de byte.
     * @param file : fichier à convertir.
     * @return
     */
    public static byte[] convertirFile2Bytes(File file){
        FileInputStream fileInputStream=null;
        byte[] bFile = new byte[(int) file.length()];
        
        try {
            //convert file into array of bytes
            fileInputStream = new FileInputStream(file);
            fileInputStream.read(bFile);
            fileInputStream.close();
            
        }catch(Exception e){
            e.printStackTrace();
        }
        return bFile;
    }
    
    /**
     * Convertir un tableau de Bytes en un objet de type File.
     * @param bytes : Tableau de Bytes.
     * @param extension : extension du fichier.
     * @return
     */
    public  static File convertirBytes2File(byte[] bytes, String extension){
        FileOutputStream fos = null;
        File newFile = null;
        try {
            ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
            newFile = new File(new Date().getTime()+"."+extension);
            fos = new FileOutputStream(newFile);
            fos.write(bytes);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Commons.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Commons.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            
        }
        return newFile;
    }
    
    /**
     * Constructeur privé pour éviter d'instancier cette classe (qui doit être statique).
     */
    private Commons(){
        
    }
}
